﻿
namespace Pretext {
    /// <summary>
    /// Represents the different supported types of tokens
    /// </summary>
    public enum TokenType {
        
        /// <summary>
        /// Some normal non-pretext text
        /// </summary>
        NormalText = 0,

        /// <summary>
        /// The opening pretext bracket tag
        /// </summary>
        StartOfPretextBracket,

        /// <summary>
        /// The closing pretext bracket tag
        /// </summary>
        EndOfPretextBracket,

        /// <summary>
        /// A symbol
        /// </summary>
        Symbol,

        /// <summary>
        /// A string of characters
        /// </summary>
        String,

        /// <summary>
        /// Assignment operator for setting the values of variables
        /// (also acts as the write shortcut)
        /// </summary>
        AssignmentOperator,

        /// <summary>
        /// A true or false value for assignment
        /// </summary>
        BooleanValue,

        /// <summary>
        /// An opening argument list bracket
        /// </summary>
        OpeningArgumentBracket,

        /// <summary>
        /// A closing argument list bracket
        /// </summary>
        ClosingArgumentBracket,

        /// <summary>
        /// An opening block bracket
        /// </summary>
        OpeningBlockBracket,

        /// <summary>
        /// A closing block bracket
        /// </summary>
        ClosingBlockBracket,

        /// <summary>
        /// General syntax within Pretext
        /// </summary>
        GeneralSyntaxGrammer,

        /// <summary>
        /// Operator for testing for equality
        /// </summary>
        EqualityOperator,

        /// <summary>
        /// Operator for testing for inequality
        /// </summary>
        InequalityOperator,

        /// <summary>
        /// Start comment
        /// </summary>
        StartComment,

        /// <summary>
        /// End comment
        /// </summary>
        EndComment,

        /// <summary>
        /// Line comment
        /// </summary>
        LineComment
    }
}
